<?php

/***********************************************/
/*CONTENIDO*/
/***********************************************/
echo" <div class=\"pag_content\">
 	<div class=\"pag_content_title\">
		<div class=\"pag_title_cap\">Cap&iacute;tulo 12: </div>
		<div class=\"pag_title_cont\">Programar tareas</div>
    </div>
    <div class=\"pag_content_body\">         
	<div class=\"contenido_principal\">	
		<br />";
		
/***********************************************/
/*TITULO PARTE*/
/***********************************************/

echo"	<div class=\"parrafo_titulo\">
	DBMS_SCHEDULER
	</div>";		

	
/***********************************************/
/*CONTENIDO*/
/***********************************************/

echo"
<div class=\"parrafo\" align=\"justify\">
El paquete DBMS_SCHEDULER posee una serie de procedimientos que permiten configurar la agenda de Oracle.
</div>
<div class=\"parrafo\" align=\"justify\">
Todos los objetos que se crean con este paquete se pueden activar con el procedimiento ENABLE.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\">
<pre><p>SQL&GT; exec DBMS_SCHEDULER.ENABLE('BACK_DIARIO');

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Y desactivarlos con la funcion DISABLE.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\">
<pre><p>SQL&GT; exec DBMS_SCHEDULER.DISABLE('BACK_DIARIO');

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Como atributos recibe el nombre del objeto y el parametro FORCE variable booleana que indica si se fuerza o no el desactivar el objeto.
</div>
<div class=\"parrafo\" align=\"justify\">
Podemos configurar los parametros que recibe un objeto de la agenda mediante el procedimiento SET_ATTRIBUTE. Los parametros que recibe este procedimiento son
<div class=\"parrafo_lista_sub\">
-- NAME<br />
-- ATTRIBUTE<br />
-- VALUE<br />
</div>
</div>
<div class=\"parrafo\" align=\"justify\">
Por otro lado podemos utilizar el procedimiento SET_ATTRIBUTE_NULL para configurar cualquier parametro a NULL. Ls parametros que recibe este procedimiento son:
<div class=\"parrafo_lista_sub\">
-- NAME<br />
-- ATTRIBUTE<br />
</div>
</div>
<div class=\"parrafo\" align=\"justify\">
Ejemplo:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\">
<pre><p>SQL&GT; exec DBMS_SCHEDULER.SET_ATTRIBUTE(
	NAME	=>'TEST_JOB',
	ATTRIBUTE	=>'ENABLED',
	VALUE		=>TRUE);

</p></pre></blockquote>
<h3>
1. Crear Jobs
</h3>
<div class=\"parrafo\" align=\"justify\">
Como hemos comentado un job es la ejecucion de un programa en un determinado instante. Ademas posee una serie de caracteristicas como prioridad, profundidad de los logs, etc, muchas de estas caracteristicas se heredan de la clase a la que pertenece el job.
</div>
<div class=\"parrafo\" align=\"justify\">
Funcion: CREATE_JOB
</div>
<div class=\"parrafo\" align=\"justify\">
Un job puede recibir una serie de argumentos:
<div class=\"parrafo_lista_sub\">
JOB_NAME<br />
JOB_TYPE<br />
<div class=\"parrafo_lista_sub\">
	-- PLSQL_BLOCK: Consiste en un bloque anonimo de PL que NO recibe parametros.<br />
	-- STORED_PROCEDURE<br />
	-- EXECUTABLE: Ejecutable externo a la base de datos.<br />
</div>	
JOB_ACTION: Indica el codigo que debe de ejecutarse en el job, puede ser un bloque completo de PL, sentencias validas de SQL (terminadas en commit) o llamadas a procedimientos. En el caso que el parametro JOB_TYPE sea un EXCECUTABLE tendriamos que indicar la llamada del script.<br />
NUMBER_OF_ARGUMENTS.<br />
PROGRAM_NAME: Indica el programa asociado con el job.<br />
START_DATE<br />
REPEAT_INTERVAL: Utiliza expresiones de calendario, si este parametro se deja a NULL el job unicamente se ejecutara una vez.<br />
END_DATE<br />
JOB_CLASS: Clase a la que pertenece el Job.<br />
ENABLED: [TRUE|FALSE]<br />
</div>
</div>
<div class=\"parrafo\" align=\"justify\">
Ejemplo:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\">
<pre><p>SQL&GT;exec DBMS_SCHEDULER.create_job(
	JOB_NAME	=>'MiJob',
	JOB_TYPE	=>'PLSQL_BLOCK',
	JOB_ACTION	=> ' update set salary =salary*1.05; commit;'
	START_DATE => '2011/11/21'
	REPEAT_INTERVAL	=> 'FREQ=YEARLY');

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">	
Si despues de crear el job consultamos en la tabla DBA_SCHEDULER_JOBS veremos que esta desactivado.
</div>
<div class=\"parrafo\" align=\"justify\">
Podemos crear un job como copia de otro.
</div>
<div class=\"parrafo\" align=\"justify\">
Ejemplo:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\">
<pre><p>SQL&GT;exec DBMS_SCHEDULER.copy_job('OLD_JOB', 'NEW_JOB');

</p></pre></blockquote>
<h3>
2. Ejecutar Jobs
</h3>
<div class=\"parrafo\" align=\"justify\">
Podemos ejecutar Jobs fuera de su programacion normal. Mediante la funcion RUN_JOB.
</div>
<div class=\"parrafo\" align=\"justify\">
Ejemplo:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\">
<pre><p>SQL&GT;exec DBMS_SCHEDULER.run_job('NEW_JOB');

</p></pre></blockquote>
<h3>
3. Parar Jobs
</h3>
<div class=\"parrafo\" align=\"justify\">
Podemos parar jobs que se esten ejecutando, reflejando en su columna STATUS como STOPPED. Tiene un parametro FORCE que si lo cofiguramos como TRUE, en la mayoria de los casos el job para mas deprisa.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\">
<pre><p>SQL&GT;exec DBMS_SCHEDULER.stop_job('NEW_JOB', TRUE);

</p></pre></blockquote>
<h3>
4. Borrar Jobs
</h3>
<div class=\"parrafo\" align=\"justify\">
La funcion drop_job elimina el objeto job de la base de datos, si configuramos el parametro FORCE  a TRUE, en el caso que el job este corriendo Oracle ejecutar un stop_job de forma implicita.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\">
<pre><p>SQL&GT;exec DBMS_SCHEDULER.drop_job('NEW_JOB', TRUE);

</p></pre></blockquote>

";
	
echo"
	</div> 		 
    </div>
    <div class=\"pag_content_footer\">
    </div>
    <div class=\"pag_content_nav\">		
		<div class=\"pag_contenido_left\">
			<a class=\"cap_next\" href=\"ocp_main.php?cap=12&part=1\">	&lt; Anterior </a>
		 </div>
		<div class=\"pag_contenido_right\" align=\"right\">	
			<a  class=\"cap_next\" href=\"ocp_main.php?cap=12&part=3\">	Siguiente &gt;</a>
		 </div>
	</div>      
</div>
";


?>